home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Extra 1997 #1
/
Amiga Plus Extra 1997 #1.iso
/
programme
/
tools
/
listcopy
/
listcopy.dok
< prev
next >
Wrap
Text File
|
1996-10-14
|
20KB
|
537 lines
Document ListCopy 1.4
============================
ListCopy V1.8
============================
(W) 1996 by J.Reinert/Lehrte
0. Was ist ListCopy
-------------------
ListCopy kopiert alle Dateien, die namentlich mit Zugriffspfad in einer
Textdatei aufgeführt sind, in ein anderes Verzeichnis. Diese Datei-Liste
kann z.B. mit dem Shell-Befehl "List" erzeugt werden. Aber auch Programme
wie "FlushFind" sollen eine brauchbare Liste erzeugen können. Es können
dann Dateien nach bestimmten Kriterien gesucht und auf einen anderen
Datenträger umkopiert werden.
NEU: - Seit Version 1.2 unterstützt ListCopy auch CLI-Parameter
- Auf mehrfachen Wunsch eines einzelnen Herren (Hallo RUX)
werden identische Dateien nicht mehr überschrieben, sondern
unter modifiziertem Namen kopiert.
- Der "Copy"-Befehl der Workbench wird nicht mehr benötigt. Habe
jetzt eine eigene Routine eingebaut (Siehe unter `Leistung').
- Kopiervorgänge lassen sich jetzt abbrechen
- Zwei Statuszeilen. Eine für Hinweise, die andere für Fehler.
1. Hintergrund
--------------
Zur Grafikkarte "Picasso-II" wird neben Bildanzeigern auch ein Programm
geliefert, welches Bilder in einer Liste verwaltet (Intuiview) und per
Mausklick ausgewählte Bilder auf der Grafikkarte anzeigt. Dazu greift es
auf Dateitypen zurück, die in der Datei "ENVARC:IntuiView.Prefs" angege-
ben sind. Die bearbeitete Bilder-Liste wird unter dem Namen "ENVARC:Intui-
View.List" gespeichert.
Nun kam es vor, daß ich ganze Bilder-CDs damit bearbeiten wollte. Flexibel
wie die Amiga-Shell ist, lassen sich mit dem List-Befehl alle Bilder samt
Zugriffspfad in eine Datei schreiben, die dann von IntuiView benutzt werden
kann. Sind nun die besten Bilder der CD ausgefiltert kann es ja sein, daß
ich alle guten Bilder auf einen anderen Datenträger umkopieren möchte.
Dies geht mit ListCopy am einfachsten.
2. Rechtliches
--------------
ListCopy in Version 1.8 ist immer noch Freeware. Sie dürfen das komplette
ListCopy-Paket an jeden Interessierten weitergeben (Verteilung erwünscht).
Es dürfen aber keine Veränderungen an den einzelnen Dateien vorgenommen
werden. Ich stelle es Ihnen aber frei, diese Anleitung ins englische zu
übersetzen und das Programmpaket um diese neue Anleitung zu bereichern.
ListCopy verteile ich, wie es ist. Sie haben keinen Anspruch auf ein Fehler-
freies Produkt. Auf meinem Amiga 4000/040 lief ListCopy lange Zeit stabil
und hat keinen Schaden hinterlassen.
Für Schäden, die durch verwenden von ListCopy entstehen, bin ich nicht
haftbar zu machen. Sie alleine übernehemn die volle Verantwortung, wenn
Sie ListCopy einsetzen.
3. Was brauche ich ?
--------------------
- Einen Amiga (zwei tun es auch :) )
- 1MB RAM
- Amiga-OS 2.04 oder besser
Außerdem empfehle ich eine Festplatte
4. Worauf muss ich achten ?
---------------------------
Seit Version 1.5 bricht ListCopy ab, wenn der Zieldatenträger voll ist.
Bereits kopierte Daten (Bytes) einer Datei bleiben dann aber unvollstän-
dig auf dem Ziel-Datenträger liegen. Da ListCopy über zwei Statuszeilen
verfügt, können Sie den Namen der "verstümmelten" Datei erkennen und
entsprechend reagieren.
ListCopy enthält eine Kopier-Routine, die sich der Umgebung anpasst. Für
jede zu kopierende Datei wird soviel RAM reserviert wie nötig bzw soviel
wie möglich. Dies hat zur Folge, das für sehr große Dateien sehr viel RAM
angefordert wird. Ist nicht genug vorhanden, wird ListCopy es mit der
halben benötigten Menge versuchen. Der Vorteil gegenüber eines Zwischen-
speichers mit fester Größe (wie es der CLI-"Copy" macht) ist, daß bei sehr
großen Dateien immer so viel Daten wie möglich eingelesen werden, bevor sie
geschrieben werden. Dies spart vor allem Zugriffszeit und vermeidet unnötiges
"Kopftraining" des Laufwerkes, wenn Dateien auf dem selben Datenträger
umkopiert werden.
ListCopy überschreibt keine Dateien. Wenn eine zu kopierende Datei schon
existiert, wird die neue Datei mit einer Zahl am Namensende erweitert. Dies
hat den Nachteil, daß sich bei sehr viel gleichen Dateinamen der Beginn des
eigentlichen Kopier-Vorganges verzögert. Natürlich hat die Namenserweiterung
auch einen klaren Vorteil: Ungleiche Dateien mit dem selben Namen aus unter-
schiedlichen Verzeichnissen können nach dem kopieren im Zielverzeichnis
bearbeitet werden.
Das Zielverzeichnis könnte dann so aussehen:
Datei1
Datei2
Datei1_2 (Name war identisch mit "Datei1")
Datei3
Datei1_3 (Name war identisch mit "Datei1" UND "Datei1_2")
Das Zielverzeichnis kann recht schnell voll sein. Sie sollten also von
Zeit zu Zeit mal nachschauen, ob nicht einige Dateien zu entfernen sind.
5. Programmstart
----------------
ListCopy kann sowohl von Workbench als auch per CLI/Shell gestartet werden.
Es steht Ihnen frei, ListCopy direkt von der Diskette zu nutzen oder es auf
Festplatte umzukopieren. Sie können wahlweise alle benötigten Teile per
Hand umkopieren (mit der Maus verschieben) oder das Install-Programm starten.
Das Installations-Programm kopiert allerdings nur eine reine CLI-Version
in ein von Ihnen gewähltes Verzeichnis Beachten Sie, daß Sie ListCopy in
diesem Fall in ein Verzeichnis kopieren, welches auch nach Befehle abgesucht
wird ( "C:")
5.0. Workbench-Start
--------------------
Auf der Workbench wird ListCopy einfach per Doppelklick auf das zugehörige
Piktogramm gestartet. Daraufhin sollte sich ein Fenster auf der Workbench
öffnen. Diese Fenster verfügt über:
- 4 Text-Gadgets Zeigen Informationen. Eingaben sind hier nicht möglich
- 4 Button-Gadgets Starten eine Aktion
- Pulldown-Menü. Zum laden und speichern der Einstellungen
5.0.0. Dateiliste
-----------------
Wenn Sie diesen Schalter betätigen öffnet sich ein Datei-Auswahlfenster.
Stellen Sie den Pfad auf die Datei ein, die Ihre Dateinamen enthält. Nach
erfolgter Auswahl erscheint der gewählte Dateiname mit Zugriffpfad im
Text-Gadget rechts des Schalters "Dateiliste". Ist der Pfad mit Namen zu
lang, wird der Pfad soweit gekürzt, daß der Dateiname auf jeden Fall
vollständig gezeigt wird. Zwischen dem gekürztem Zugriffpfad und dem Namen
werden zur Kennzeichnung dann vier Punkte dargestellt.
Während des Kopiervorganges kann dieser Schalter nicht angewählt werden
5.0.1. Speicherpfad
-------------------
Ein Klick auf diesen Schalter erlaubt die Auswahl eines Zielpfades für das
Programm. Alle Dateien aus der ausgewählten Liste werden in dieses Ver-
zeichnis kopiert. Die Originalnamen bleiben dabei erhalten. Der ausgewählte
Pfad erscheint rechts neben dem Schalter in dem dafür vorgesehenen Text-
Gadget.
Während des Kopiervorganges kann dieser Schalter nicht angewählt werden
5.0.2. Kopieren
---------------
Dieser Schalter aktiviert den Kopiervorgang. Nacheinander werden die Datei-
namen mit Zugriffspfad der Datei-Liste entnommen und in das Zielverzeichnis
kopiert. Der Name der Datei, die gerade umkopiert wird, erscheint rechts
neben dem Kopier-Schalter. Auch hier werden sehr lange Pfade abgekürzt und
mit vier Punkten gekennzeichnet, damit der Dateiname selber in voller Länge
sichtbar bleibt. Fehlermeldungen werden im Textfeld rechts neben dem
"Abbrechen"-Schalter ausgegeben.
Während des Kopiervorganges kann dieser Schalter nicht angewählt werden
5.0.3. Abbrechen
----------------
Dieser Schalter ist normalerweise abgeschaltet. Sobald Sie jedoch den
Kopiervorgang starten, wird er freigegeben und bricht bei anklicken
den Vorgang ab. Es kann allerdings passieren, daß die gerade kopierte
Datei nicht vollständig im Zielverzeichnis ist. Dies betrifft vor allem
relativ große Dateien. Der Name der zuletzt kopierten Datei kann neben
dem "Kopieren"-Gadget (Schalter) abgelesen werden.
5.0.4. Vorgaben-Menü
--------------------
Vorgaben sind gespeicherte bzw. benutzte Einstellungen von "Dateiliste"
und "Speicherpfad". Mit druck auf die rechte Maustaste öffnet sich das Menü
des Fensters. Sie erkennen vier Menüpunkte:
- "Zuletzt gespeicherte laden" Dieser Menüpunkt veranlasst den Rechner,
zuvor gespeicherte Einstellungen von
Festplatte zu laden. Die zu ladende Datei
befinfet sich im Verzeichnis "ENVARC:"
und hat den Namen "ListCopy"
- "Zuletzt benutzte laden" Ähnlich wie beim vorherigen Menüpunkt
wird auch hier eine Einstellung geladen.
Es handelt sich hierbei aber um eine im
RAM abgelegte Datei, die mit ausschalten
des Rechners verlorengeht und dement-
sprechend nur so lange verfügbar ist, wie
der Rechner läuft. Erzeugt wird diese
Datei automatisch bei verlassen des
Programmes oder manuell durch wählen des
Menüpunktes "Benutzen"
- "Speichern" Die Einstellungen für Speicherpfad und
Datei-Liste werden dauerhaft auf dem
Workbench-Datenträger (ENVARC:) abgelegt.
(Siehe auch "Zuletzt gespeicherte laden")
- "Benutzen" Bei Anwahl dieses Menüpunktes werden die
momentanen Einstellungen temporär im Ver-
zeichnis "ENV:" (Ram-Disk) gesichert.
Solange der Rechner nicht ausgeschaltet
wird, werden diese Einstellungen mit jedem
Start des Programmes geladen.
Die Voreinstellungen werden bei CLI-Nutzung nicht berücksichtigt und auch
nicht verändert.
5.1. CLI-Start
--------------
Öffnen Sie eine Shell und geben Sie "ListCopy ?" ein. Sie sollten jetzt
die folgende Befehls-Schablone sehen:
DATEILISTE/A,ZIEL/A,STILL/S:
Wenn Sie "ListCopy" OHNE Parameter starten, erhalten Sie lediglich einen
Hinweis, daß Sie für eine kleine Hilfe ein Fragezeichen angeben müssen.
Die Schablone lässt erkennen, daß Sie zwei Parameter (Dateiliste und Ziel)
angeben MÜSSEN und einen Schalter angeben KÖNNEN.
Während der Kopiervorgang läuft werden Sie ständig darüber informiert,
welche Datei gerade kopiert wird. Sollten Fehler auftreten, werden diese
ebenfalls ausgegeben. Sollte der Ziel-Datenträger voll sein, wird der
Kopiervorgang automatisch abgebrochen.
Vorgaben werden im CLI nicht berücksichtigt. Sie müssen für Dateiliste
und Ziel immer gültige AmigaDOS-Pfade angeben.
5.1.0. DATEILISTE-
------------------
Dieser Parameter gibt an, welche Datei die namen der zu kopierenden Dateien
enthält. Sofern die Dateiliste nicht im aktuellen Verzeichnis ist, muss der
vollständige Zugriffspfad angegeben werden. Joker (Platzhalter für unbe-
kannte Zeichen) werden NICHT unterstützt. Es darf nur ein Dateiname ange-
geben werden. Die per Oberfläche getätigten Einstellungen (bei WB-Start)
werden weder übernommen noch verändert.
5.1.1. ZIEL
-----------
Mit dem Ziel-Parameter geben Sie den Speicherpfad für die zu kopierenden
Dateien an. Dieser Pfad muss mit einem ":" oder "/" enden. Wenn diese
Zeichen fehlen, wird ListCopy davon ausgehen, daß Sie die zu kopierenden
Dateien in ein Unterverzeichnis kopieren möchten und wird den Zielpfad
um das Zeichen "/" erweitern. Wenn Sie Dateien in ein Hauptverzeichnis
kopieren möchten, muss der Zielpfad mit dem Doppelpunkt enden.
5.1.2. STILL
------------
Bei diesem Parameter handelt es sich um einen Schalter. Wird die Zeichen-
folge "STILL" angegeben, wird der Schalter aktiviert und unterdrückt
erfolgreiche Textausgaben wie "Kopiere ....". Fehlermeldungen werden
weiterhin ausgegeben.
Alternativ kann die Textausgabe auch umgeleitet werden. Dies erreichen
Sie, wenn Sie nach dem "ListCopy"-Befehl das Zeichen ">" gefolgt von
einem Dateinamen angeben. Genaueres dazu siehe unter `Beispiele'
5.1.3. Beispiele
----------------
ListCopy dh2:Dateiliste dh5:
kopiert alle in der Datei "DH2:Dateiliste" eingetragenen Dateien
nach DH5 in das Hauptverzeichnis. Welche Datei gerade kopiert
wird, sehen Sie an den auftauchenden Meldungen
ListCopy dh2:Dateiliste dh5: STILL
kopiert alle in der Datei "DH2:Dateiliste" eingetragenen Dateien
nach DH5 in das Hauptverzeichnis. Durch Angabe des Parameters
"STILL" werden die "Kopier"-Meldungen unterdrückt. Falls ein
Fehler erkannt wird, erscheint dieser trotzdem.
ListCopy >RAM:Ergebnisse dh2:Dateiliste dh5:Ziel/
kopiert alle in der Datei "DH2:Dateiliste" eingetragenen Dateien
nach DH5 in das Unterverzeichnis "Ziel". Wegen der Ausgabe-
Umleitung werden alle Meldungen (auch Fehler) in die Datei
"Ergebnisse" der RAM-Disk geschrieben.
ListCopy >>RAM:Ergebnisse dh2:Dateiliste dh5:Ziel/
kopiert alle in der Datei "DH2:Dateiliste" eingetragenen Dateien
nach DH5 in das Unterverzeichnis "Ziel". Wegen der Ausgabe-
Umleitung (Diesmal mit zwei ">" eingeleitet) werden alle Meldungen
(auch Fehler) an die Datei "Ergebnisse" der RAM-Disk angehängt.
ListCopy >PRT: dh2:Dateiliste dh5:Ziel/
kopiert alle in der Datei "DH2:Dateiliste" eingetragenen Dateien
nach DH5 in das Unterverzeichnis "Ziel". Wegen der Ausgabe-
Umleitung werden alle Meldungen (auch Fehler) auf dem ange-
schlossenen Drucker ausgegeben.
ListCopy envarc:Intuiview.List
Erinnert Sie daran, daß Sie die Befehlsschablone mit einem Frage-
zeichen als Parameter aufrufen können, da Sie einen Parameter
vergessen haben.
Ein laufender Kopierprozess kann durch halten der Ctrl-Taste und gleich-
zeitigem betätigen der C-Taste unterbrochen werden (Ctrl-C). Diese Tasten-
kombination ist üblich fürs unterbrechen von Vorgängen. Es kann allerdings
passieren, daß die gerade kopierte Datei nicht vollständig im Zielver-
zeichnis ist. Dies betrifft vor allem relativ große Dateien. Der Name der
zuletzt kopierten Datei kann, sofern der "STILL"-Schalter nicht angegeben
wurde, im Shell-Fenster abgelesen werden.
Bei der CLI-Only Version ist es bei "hartnäckigen" Fehlern wie "Datenträger
nicht angemeldet" recht schwierig, den Kopiervorgang abzubrechen. Es ist
aber möglich:
-Bei auftauchen der System-Rückfrage "Benötige den Datenträger..." diesen
vorerst stehen lassen.
-Aktivieren Sie das Shell-Fenster, aus dem Sie "ListCopy" gestartet haben
-Geben Sie das Abbruchkommando ein (Ctrl-C)
-Bestätigen Sie die System-Rückfrage negativ (Abbrechen)
5.7. Schnellstart
-----------------
Von Workbench:
- Programm per Doppelklick starten
- Knopf "Dateiliste" betätigen und die Textdatei mit den zu kopierenden
Dateien auswählen
- Knopf "Speicherpfad" betätigen und das Zielverzeichnis für alle Dateien
wählen
- Knopf "Kopieren" wählen, um Kopiervorgang zu starten
- Knopf "Abbrechen" wählen, um Kopiervorgang abzubrechen
Von Shell:
- Shell öffnen
- Eingabe "ListCopy <Dateiliste> <Zielpfad>
- Ctrl-C bricht Kopiervorgang ab.
5.8. Aufbau der Dateiliste
--------------------------
Die Textdatei mit den Namen und Zugriffspfaden der zu kopierenden Dateien
darf nur eine reine ASCII-Datei sein. Jede Zeile sollte mit einem Zeilen-
vorschub-Code (0x0A) enden. Leere Zeilen (Nur Vorschubcode) werden über-
gangen (ACHTUNG: Wenn eine Zeile nur Leerzeichen enthält, gelten diese als
Dateiname).
Eine Dateiliste mit Bilder könnte z.B. so erzeugt werden:
1. Öffnen Sie ein Shell-Fenster
2. Geben Sie "List >RAM:PicList Device:Pfad/Muster FILES LFORMAT %s%s"
ein (Ohne Anführungszeichen)
Beispiel: Im Verzeichnis "Bilder:Kelly_Family" befinden sich Bilder mit
der Endung ".IFF". Diese sollen alle in der Dateiliste
"RAM:PicList" auftauchen:
List >RAM:PicList Bilder:kelly_family/#?.IFF FILES LFORMAT %s%s
3. Betätigen Sie die <Return>-Taste. Alle Bilder mit dem angegebenen Muster
werden mit Name und Zugriffspfad in der Liste "PicList" in der Ram Disk
abgelegt.
Dieses Beispiel ist allerdings sehr schlecht. Immerhin können die Bilder
mit dem Copy-Befehl ja auch gleich umkopiert werden. Besser ist das im
Abschnitt `Hintergrund' erwähnte Beispiel.
Auch Suchprogramme wie "FlushFind" sollen in der Lage sein, derartige Listen
anzulegen. Damit könnten z.B. alle Dateien, die eine bestimmte Zeichenkette
enthalten, in einer Liste "zusammengefunden" werden und anschließend mit
meinem Programm "ListCopy" auf einen anderen Datenträger umkopiert werden.
6. Programmende
---------------
Um ListCopy zu beenden brauchen Sie nur das Schließ-Symbol des Fensters
anklicken. Bei Start von der Shell beendet sich ListCopy normalerweise
selber.
7. Leistung
-----------
Obwohl ich ListCopy in BASIC (Blitz2) geschrieben habe, konnte ich fest-
stellen, daß meine eigene Kopier-Routine unter bestimmten Voraussetzungen
um einiges schneller ist als der Shell-Befehl "Copy". Bedingung ist auf
jeden Fall reichlich Arbeitsspeicher (RAM)
Hier zwei Beispiele:
-----------------------------------------------
System : Amiga 4000/040, 25MHz
16MB FastRAM (32Bit)
6MB FastRam (16Bit)
2MB ChipRAM
DH3 = Conner 850MB IDE
DH4+DH5 = IBM-DORS 2GB SCSI-2
-----------------------------------------------
Aufgabe1 : Kopieren von 34,113,408 (34MB) von DH5 nach DH3
(Beachte: Zwei verschiedene Festplatten)
Shell-Copy: 50 Sekunden
ListCopy : 35 Sekunden
Aufgabe2 : Kopieren von 34,113,408 (34MB) von DH5 nach DH4
(Beachte: Eine Festplatte mit zwei Parts)
Shell-Copy: 40 Sekunden (Die IBM ist schneller als die Conner)
ListCopy : 20 Sekunden
Bei genauem hinschauen wird man feststellen, daß ListCopy besonders
effektiv ist, wenn Dateien innerhalb einer einzigen Festplatte umkopiert
werden. Dies liegt vor allem an dem großen Pufferspeicher, der zum kopieren
angelegt wird.
8. Programmierer
----------------
So, nun zu mir. Ich weis, daß ListCopy recht umfangreich geworden ist. Da
ich dieses Progi in BlitzBASIC geschrieben habe, kann ich kaum Einfluß auf
den Code nehmen und muss mich mit der Programmlänge abfinden. Außerdem be-
finden sich umfangreiche Check-Routinen im Programm, die sehr viele Fehler
entdecken und melden. Wie ListCopy auf defekte Zielverzeichnisse reagiert
kann ich nicht sagen. Leider (zum Glück) waren meine Datenträger alle in
Ordnung.
Pack-Programme wie Powerpacker könnten in der Lage sein, den Programmcode
auf 60% zu reduzieren. Dies ist aber nur sinnvoll auf Systemen mit sehr
wenig Festplattenkapazität. Im Arbeitsspeicher braucht das Programm immer
seinen Platz. Und der lässt sich nicht komprimieren. Es sei denn, ich
verfasse ListCopy in Assembler :)
Verursacht hat "ListCopy":
Jürgen Reinert
Am Kirchberg 4
31275 Lehrte
Tel: 05175-3972
BTX: 051753972-0001
BTX: *413619999999934# (A-Seite "Techno")
PS: Geld- und Sachspenden sind immer willkommen :)